Next 배우기 v.02

1. fetch

  • server component에서 next가 fetch한 것을 기억해서 프론트에서 로딩이 되지 않는다.
  • 데이터가 도착해야 사용자가 화면을 출력 받을 수 있다.

Server Component

  • fetch data
  • 백엔드 리소스에 접근 시
  • 중요한 정보 서버에 보관 시(API key, access token ..)
  • 클라이언트 측 JS 코드 줄여야 할 때

Client Component ("use client")

  • fetch data - SWR, React Query 등 라이브러리 사용시
  • 이벤트 리스너 추가시(onClick, onChange ..)
  • State, Lifecycle Effects 사용시(useState, useEffect, useReducer ..)
  • 브라우저 Web API 사용시(localStorage, sessionStorage, Cookie)
  • State, Effect, 브라우저 API에 의존하는 커스텀 Hook 사용시
  • React Class Component 사용시

2. loading

  • loading 페이지를 따로 만들어 구성하면 자동으로 로딩페이지가 보여진다.
  • 백엔드에서 fetch 하는 중에 사용자에게 보여지는 페이지
  • page와 같은 폴더에 있어야 해당 페이지의 로딩 화면으로 출력된다.

3. Promise.all()

  • 병렬적 fetch
  • js에서 비동기 작업을 동시에 실행하고 모든 작업이 완료될 때까지 기다렸다가 결과를 배열 형태로 반환하는 함수
  • 단점: 둘다 로딩이 끝나야 화면에 출력할 수 있음

4. Suspense

  • promise.all의 단점을 보완
  • 데이터 로딩이 완료된 컴포넌트 순서대로 결과를 보여준다.
  • 병렬 프로그래밍
  • 각각 데이터들의 로딩중에 fallback을 이용하여 로딩화면을 띄울 수 있다.

  • 컴포넌트화 해서 정리할 수 있다.

5. error

  • error.tsx를 만들어 오류 처리를 하면 페이지가 깨지지 않고 오류 메세지를 전달할 수 있다.
  • page와 같은 폴더에 있어야 해당 페이지의 에러 화면으로 출력된다.